#ifndef PROPS_H
#define PROPS_H

#include <string>

namespace eintik::property
{

const extern std::string kWaveSpeed;
std::pair<int, double> on_point(double range_start, double range_end, double velocity, int cnt_points_max);
double delay_time(double range_start);

// start: mm
void set_gate_start(int id_gate, double start);
// id of point,
int pos_gate_start(int id_gate);
// end: mm
void set_gate_end(int id_gate, double end);
// id of point,
int pos_gate_end(int id_gate);
bool pos_gate_isync(
    int id_gate, const int16_t *point, int cnt, 
    int &start, int &end, int *shift = nullptr);
void set_threadhold_gate_i(double threshold);
double threadhold_gate_i();

double signal_range();

//obtain gap_element
void set_gap_element(double gap);
double pos_gap_element();

//obtain start_element
void set_element_start(int start);
//obtain end_element
void set_element_end(int end);

double gap_range();
void set_cscan_interval(double cscan_interval);
double cscan_interval();

int cnt_points();

void set_encoder_delay(int encoder_delay);

int encoder_delay();

int cnt_beam();

int32_t encoder_resolution();
//beam
void set_beam_location(int beam_location);

//type
void set_start_type(int type);
int start_type();

int beam_location();
}

#endif // PROPS_H
